package com.losrebellos.display.button 
{
	import com.losrebellos.display.base.SpritePlus;

	import flash.events.Event;

	/*
	 *
	 * @author los rebellos - ben@benoitvinay.com
	 *
	 */
	public class AbstractBaseButton extends SpritePlus implements IButton
	{
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// VARIABLES
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		protected var _zone:SpritePlus;
		
		
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// CONSTRUCTOR
		// //////////////////////////////////////////////////////////////////////////////////////////////////////////////
		public function AbstractBaseButton()
		{
			super();
		}
		
		
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// INTERACTION
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		public function enable():void
		{
			addEvents();
		}
		public function disable():void
		{
			removeEvents();
		}
		
		
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// EVENTS
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		protected function addEvents():void
		{
			_zone.button = true;
		}
		protected function removeEvents():void
		{
			_zone.button = false;
		}
		
		
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// DOUBLE CLICK
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		override public function set doubleClickEnabled(enabled:Boolean):void
		{
			_zone.doubleClickEnabled = enabled;
		}
		override public function get doubleClickEnabled():Boolean
		{
			return _zone.doubleClickEnabled;
		}
		
		
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// DISPOSE
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		override public function dispose(e:Event = null):void
		{
			removeEvents();
			
			super.dispose(e);
		}
	}
}